<?php
import('view.response.class.php');
import('model.request.class.php');
import('model.session.class.php');
class Response extends Controller{
	
	var $view = null;
	
	function __construct(){
		$this->view = new ViewResponse();
	}
	
	public function build(){
		list($responser,$nickname,$code) = $this->parseJsonArgs();
		
		//检查uuid
		if(!$responser){
			//没有设置uuid或者uuid长度为0时，出错处理
			parent::displayByCode(RESPONSE_F_UNKOWN_UUID);
			return;
		}
		
		
		//检查nickname是否可用
		if(!$nickname){
			//没有设置nickname或者nickname长度为0时，出错处理
			parent::displayByCode(RESPONSE_F_NICK_NEEDED);
			return;
		}
		
		//检查code是否可用
		if(!$code){
			//没有设置code或者code长度为0时，出错处理
			parent::displayByCode(RESPONSE_F_CODE_NEED);
			return;
		}
		
		//更新数据库
		$request = ModelRequest::findRequestByVerifyCode($code);
		
		//检查是否存在对应的请求
		if(!isset($request)){
			parent::displayByCode(RESPONSE_F_UNKOWN_CODE);
			return;
		}
			
		//检查不能自己回复自己的情况
		if($responser == $request->requester){
			parent::displayByCode(RESPONSE_F_RESPONSE_OWNER);
			return;
		}
		
		//检查是否已经存在对应的回话关系
		$ms=ModelSession::findByAssociate($responser, $request->requester);
		if(isset($ms)){
			//更新最后活动时间
			if($ms->updateLastActivity()){
				//返回成功提示信息
				parent::displayByCode(RESPONSE_S_UPDATE);
				return;
			}else{
				parent::displayByCode(RESPONSE_F_UNKOWN_REASON);
				return;
			}
		}
		
		//如果以上检查均通过，则说明此回话尚未建立。以下代码为建立新回话代码
		$ms = ModelSession::generateByResponse($request, $responser, $nickname);
		$ret = $ms->insertIntoDB();
		
		if(true == $ret){
			//删除已过期的request信息
			ModelRequest::deleteAllRequestWithUUID($request->requester);
			ModelRequest::deleteAllRequestWithUUID($responser);
			//返回成功提示信息
			parent::displayByCode(RESPONSE_S_OK);
			// 可能还需要在session中更新某些信息
			$_SESSION['target_uuid'] = $request->requester;
		}else{
			parent::displayByCode(RESPONSE_F_UNKOWN_REASON);
		}
		
	}
	
	public function distroy(){
		$uuid = $_SESSION['uuid'];//从登陆信息中获取用户UUID信息
		
		//检查uuid
		if(!$uuid){
			//没有设置uuid或者uuid长度为0时，出错处理
			parent::displayByCode(RESPONSE_F_UNKOWN_UUID);
			return;
		}
		
		$ss = ModelSession::findSessionByUUID($uuid);
		if(isset($ss)){
			$ret = $ss->deleteFromDB();
			if($ret){
				parent::displayByCode(RESPONSE_S_OK);
				return;
			}else{
				parent::displayByCode(RESPONSE_F_UNKOWN_REASON);
				return;
			}
		}else{
			parent::displayByCode(RESPONSE_F_UNKOWN_SESSION);
			return;
		}
	}
	
	private function parseJsonArgs(){
		// 未实现的json解析功能
		$uuid = $_SESSION['uuid'];//从登陆信息中获取用户UUID信息
		$nick = getArgs('nick');
		$code = getArgs('code');
		return array($uuid,$nick,$code);
	}
	
}